package com.wechat.network;

import java.util.concurrent.CompletionStage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.swak.exception.RemotingException;
import com.swak.utils.StringUtils;
import com.wechat.command.Command;
import com.wechat.command.CommandResult;
import com.wechat.service.node.NodeService;

/**
 * Chat 网络连接
 * 
 * @author 618lf
 */
public interface Network {

	Logger logger = LoggerFactory.getLogger(Network.class);

	default String name() {
		return StringUtils.EMPTY;
	}

	/**
	 * 连接
	 */
	default void connect() throws RemotingException {
	};

	/**
	 * 登陆服务器
	 */
	default void login() throws RemotingException {
	};

	/**
	 * 关闭
	 */
	default void close() throws RemotingException {
	};
	
	// ================================================================================
	// 发送指令
	// ================================================================================
	CompletionStage<CommandResult> send(Command cmd);
	
	/**
	 * 绑定服务
	 * 
	 * @param nodeService
	 */
	void bind(NodeService nodeService);
}
